/***************************************************************************************
* Copyright (c) 2014-2022 Zihao Yu, Nanjing University
*
* NEMU is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*          http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*
* See the Mulan PSL v2 for more details.
***************************************************************************************/

#include <isa.h>
#include <cpu/difftest.h>
#include "../local-include/reg.h"

bool isa_difftest_checkregs(CPU_state *ref_r, vaddr_t pc) {
  // if (ref_r->pc != pc)
  // {
  //   // printf("ref_r.pc = 0x%lx\n",ref_r->pc);
  //   // printf("pc =0x%lx\n",pc); 
  // }
  // for (size_t i = 0; i < 32; i++)
  // {
  //   if(ref_r->gpr[i] != gpr(i)){
  //     printf("%ld\n",i);
  //     printf("ref_r->gpr(i) = 0x%lx\n",ref_r->gpr[i]);
  //     printf("gpr(i) =0x%lx\n",gpr(i));
  //   }
  // }
  for (size_t i = 0; i < 32; i++)
  {
    if(!difftest_check_reg(reg_name(i,4),pc,ref_r->gpr[i],cpu.gpr[i])){
      return false;
    }
  }
  if(!difftest_check_reg("pc",pc,ref_r->pc,cpu.pc)){
    return false;
  }
  
  return true;
}

void isa_difftest_attach() {
}
